package com.moyoutian.leetcode;

/**
 * 14. 最长公共前缀
 * <p>
 * 编写一个函数来查找字符串数组中的最长公共前缀。
 * <p>
 * 如果不存在公共前缀，返回空字符串 ""。
 * <p>
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：strs = ["flower","flow","flight"]
 * 输出："fl"
 * <p>
 * 示例 2：
 * <p>
 * 输入：strs = ["dog","racecar","car"]
 * 输出：""
 * 解释：输入不存在公共前缀。
 * <p>
 * <p>
 * <p>
 * 提示：
 * <p>
 * 1 <= strs.length <= 200
 * 0 <= strs[i].length <= 200
 * strs[i] 仅由小写英文字母组成
 */
public class Demo14 {

    public static void main(String[] args) {
        String[] strs = {"dog","racecar","car"};
        System.out.println(longestCommonPrefix(strs));
    }

    public static String longestCommonPrefix(String[] strs) {
        //题目给的200
        int minLen = 200;
        for (int i = 0; i < strs.length; i++) {
            minLen = Math.min(minLen, strs[i] == null ? 0 : strs[i].length());
        }
        char[] re = new char[minLen];
        for (int i = 0; i < minLen; i++) {
            //初始化 随便一个不是小写的英文字符即可
            for (int j = 0; j < strs.length; j++) {
                if (j == 0) {
                    re[i] = strs[j].charAt(i);
                } else {
                    //当前已经不是共工前缀
                    if (re[i] != strs[j].charAt(i)) {
                        return String.valueOf(re, 0, i);
                    }
                }
            }
        }
        return String.valueOf(re);
    }
}
